package com.limao.Utils;



import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.ObjectMetadata;



/**
 * 该示例代码展示了如果在OSS中创建和删除一个Bucket，以及如何上传和下载一个文件。
 * 
 * 该示例代码的执行过程是：
 * 1. 创建一个Bucket（如果已经存在，则忽略错误码）；
 * 2. 上传一个文件到OSS；
 * 3. 下载这个文件到本地；
 * 4. 清理测试资源：删除Bucket及其中的所有Objects。
 * 
 * 尝试运行这段示例代码时需要注意：
 * 1. 为了展示在删除Bucket时除了需要删除其中的Objects,
 *    示例代码最后为删除掉指定的Bucket，因为不要使用您的已经有资源的Bucket进行测试！
 * 2. 请使用您的API授权密钥填充ACCESS_ID和ACCESS_KEY常量；
 * 3. 需要准确上传用的测试文件，并修改常量uploadFilePath为测试文件的路径；
 *    修改常量downloadFilePath为下载文件的路径。
 * 4. 该程序仅为示例代码，仅供参考，并不能保证足够健壮。
 *
 */
public class OSSObjectSample{
    private static final String ACCESS_ID = "LTAIQSSbvznR6NMc";//"5dCHmYOWsmfUDL5r";
    private static final String ACCESS_KEY = "XPQT3tltLJXB6EdkWCzHPVsy5uny7y";//"8pMTzna83U6b6LQupWRny3NwZJTzIi";
    //oss内网
    //private static final String endpoint ="http://oss-cn-shenzhen-internal.aliyuncs.com";
    //oss外网
    private static final String endpoint ="http://oss-cn-shenzhen.aliyuncs.com";
    private static final String bucketName ="crowdimage";//"crowd-image";
    //private static final String pathfile="lzimage/";//文件夹功能模拟 
    
    public static boolean OSS_upload(InputStream input,String newFileNmae,long size,String contentType) throws Exception {
        boolean  flag=false;
        
    	//String downloadFilePath = "d:/temp/"+newFileNmae;
        //OSSClient client = new OSSClient(ACCESS_ID, ACCESS_KEY);
        OSSClient client = new OSSClient(endpoint, ACCESS_ID, ACCESS_KEY);
        //oss-cn-hangzhou-internal.aliyuncs.com
        try {
            System.out.println("正在上传...");
            ObjectMetadata objectMeta = new ObjectMetadata();
            objectMeta.setContentLength(size);  
            objectMeta.setContentType(contentType);
            //newFileNmae=pathfile+newFileNmae;
            
            client.putObject(bucketName, newFileNmae, input, objectMeta);
            //System.out.println("正在下载...");
            //downloadFile(client, bucketName, newFileNmae, downloadFilePath);
            flag=true;
        } catch (Exception e) {
        	flag=false;
			e.printStackTrace();
        }
        return  flag;
        
    }
    // 上传文件
    private static void uploadFile(OSSClient client, String bucketName, String key, String filename)
            throws OSSException, ClientException, FileNotFoundException {
        File file = new File(filename);

        ObjectMetadata objectMeta = new ObjectMetadata();
        objectMeta.setContentLength(file.length());
        // 可以在metadata中标记文件类型
        objectMeta.setContentType("image/jpeg");
        InputStream input = new FileInputStream(file);
        client.putObject(bucketName, key, input, objectMeta);
    }
    // 下载文件
    private static void downloadFile(OSSClient client, String bucketName, String key, String filename)
            throws OSSException, ClientException {
        client.getObject(new GetObjectRequest(bucketName, key),
                new File(filename));
    }
}
